﻿using System;
using System.Data.SqlClient;
using System.Globalization;

public partial class Forma_Resumen : System.Web.UI.Page
{
    DatabaseConnection dbCon;
    private String SessionID;
    private Int32 Folio;

    protected void Page_Load(object sender, EventArgs e)
    {
        SessionValidation();

        dbCon = new DatabaseConnection();
        if (dbCon.FolioExistsForCurrentUser(ref Folio, SessionID))
        {
            MostrarResumen.Visible = true;
            LoadDatosAlumno();
        }
        else
        {
            ResumenStatus.Visible = true;
        }
        dbCon.CloseConnection();

    }

    private void LoadDatosAlumno()
    {

        dbCon = new DatabaseConnection();

        SqlDataReader datosAlumnoReader;
        SqlDataReader datosFamiliaresReader;
        SqlDataReader aspectosFamiliaresReader;
        SqlDataReader aspectosFinancierosFamiliaresReader;
        SqlDataReader aspectosEconomicosFamiliaresReader;
        SqlDataReader aspectosEconomicosAlumnoReader;

        //
        String queryDatosDelAlumno = "SELECT [Alumnos].Matricula, [Alumnos].Nombre, [Alumnos].Apellido, [Solicitud].Alumno_Carrera, [Solicitud].Datos_CorreoPersonal, [Solicitud].Folio " +
                       "FROM [Alumnos] INNER JOIN [Solicitud] ON [Solicitud].Matricula = [Alumnos].Matricula " +
                       "WHERE [Alumnos].Matricula ='" + SessionID + "' AND [Solicitud].Folio = "+ Folio +";";
        //
        String queryDatosFamiliares = "SELECT [Datos_NombreTutor], [Datos_DependenciaEconomica] FROM [Solicitud] WHERE [Folio] = " + Folio + ";";

        //Familiares, Vehiculos, Propiedades
        String[] QueryAspectosFamiliares = {"SELECT COUNT([IdFamiliares]) AS 'numeroFamiliares' FROM [Familiares] WHERE [Familiares].Folio = " + Folio + ";",
                                            "SELECT COUNT([IdVehiculos]) AS 'numeroVehiculos' FROM [Vehiculos] WHERE [Vehiculos].Folio = " + Folio + ";" ,
                                            "SELECT COUNT([IdPropiedades]) AS 'numeroPropiedades' FROM [Propiedades] WHERE [Propiedades].Folio = " + Folio + ";"};
        //Activos y Pasivos
        String[] QueryAspectosFinancierosFamiliares = {"SELECT COUNT([IdActivos]) AS 'numeroActivos' FROM [Activos] WHERE [Activos].Folio = " + Folio + ";" ,
                                                      "SELECT COUNT([IdPasivos]) AS 'numeroPasivos' FROM [Pasivos] WHERE [Pasivos].Folio = " + Folio + ";"};
        //Ingresos y Egresos del Alumno
        String[] QueryaspectosEconomicosAlumnoReader = {"SELECT SUM([IngresosPersonal_Monto]) AS 'SumaIngresos' FROM [wbecfildb].[dbo].[IngresosPersonal] WHERE [Folio] = " + Folio + ";",
                                                  "SELECT SUM([EgresosPersonal_Monto]) AS 'SumaEgresos' FROM [wbecfildb].[dbo].[EgresosPersonal] WHERE [Folio] = " + Folio + ";"};
        //Ingresos y Egresos de la Familia
        String[] QueryAspectosEconomicosFamiliares = {"SELECT SUM([Aportadores_Sueldo]+[Aportadores_InteresesDividendos]+[Aportadores_Honorarios]+[Aportadores_Rentas]"+
                                                      "+[Aportadores_VentasComisiones]+[Aportadores_Aguinaldo]+[Aportadores_Ahorro]+[Aportadores_Bonos]"+
                                                      "+[Aportadores_Otros]) AS 'SumaIngresosFamiliares' FROM [wbecfildb].[dbo].[Aportadores] WHERE [Folio] = " + Folio + ";",
                                                      "SELECT SUM([DesembolsoFamiliar_Monto]) AS 'SumaEgresosFamiliares' FROM [wbecfildb].[dbo].[DesembolsoFamiliar] WHERE [Folio] = "+ Folio +";"};

        datosAlumnoReader = dbCon.ExecuteSelect(queryDatosDelAlumno);


        while (datosAlumnoReader.Read())
        {
            String matricula = datosAlumnoReader["Matricula"].ToString();
            String nombre = datosAlumnoReader["Nombre"].ToString();
            String apellido = datosAlumnoReader["Apellido"].ToString();
            String email = datosAlumnoReader["Datos_CorreoPersonal"].ToString();
            String carrera = datosAlumnoReader["Alumno_Carrera"].ToString();
            String folio = datosAlumnoReader["Folio"].ToString();

            label_1_2.Text = matricula.ToUpper();
            label_1_4.Text = nombre + " " + apellido;
            if (!String.IsNullOrEmpty(email))
                label_1_6.Text = email;
            if (!String.IsNullOrEmpty(carrera))
                label_1_8.Text = carrera;
        }
        datosAlumnoReader.Close();

        datosFamiliaresReader = dbCon.ExecuteSelect(queryDatosFamiliares);
        while (datosFamiliaresReader.Read())
        {
            String tutor = datosFamiliaresReader["Datos_NombreTutor"].ToString();
            String dependencia = datosFamiliaresReader["Datos_DependenciaEconomica"].ToString();
            if (!String.IsNullOrEmpty(tutor))
                label3_8.Text = tutor;
            if (!String.IsNullOrEmpty(dependencia))
                label3_10.Text = dependencia;
        }
        datosFamiliaresReader.Close();

        //LLena el número de ;

        aspectosFamiliaresReader = dbCon.ExecuteSelect(QueryAspectosFamiliares[0]); //Familiares
        while (aspectosFamiliaresReader.Read())
        {
            String numeroFamiliares = aspectosFamiliaresReader["numeroFamiliares"].ToString();
            label3_2.Text = numeroFamiliares;
        }
        aspectosFamiliaresReader.Close();

        aspectosFamiliaresReader = dbCon.ExecuteSelect(QueryAspectosFamiliares[1]); //Vehiculos
        while (aspectosFamiliaresReader.Read())
        {
            String numeroVehiculos = aspectosFamiliaresReader["numeroVehiculos"].ToString();
            label3_4.Text = numeroVehiculos;
        }
        aspectosFamiliaresReader.Close();

        aspectosFamiliaresReader = dbCon.ExecuteSelect(QueryAspectosFamiliares[2]); //Propiedades
        while (aspectosFamiliaresReader.Read())
        {
            String numeroPropiedades = aspectosFamiliaresReader["numeroPropiedades"].ToString();
            label3_6.Text = numeroPropiedades;
        }
        aspectosFamiliaresReader.Close();

        aspectosFinancierosFamiliaresReader = dbCon.ExecuteSelect(QueryAspectosFinancierosFamiliares[0]); //Activos
        while (aspectosFinancierosFamiliaresReader.Read())
        {
            String numeroActivos = aspectosFinancierosFamiliaresReader["numeroActivos"].ToString();
            label4_2.Text = numeroActivos;
        }
        aspectosFinancierosFamiliaresReader.Close();

        aspectosFinancierosFamiliaresReader = dbCon.ExecuteSelect(QueryAspectosFinancierosFamiliares[1]); //Pasivos
        while (aspectosFinancierosFamiliaresReader.Read())
        {
            String numeroPasivos = aspectosFinancierosFamiliaresReader["numeroPasivos"].ToString();
            label4_4.Text = numeroPasivos;
        }
        aspectosFinancierosFamiliaresReader.Close();

        aspectosEconomicosAlumnoReader = dbCon.ExecuteSelect(QueryaspectosEconomicosAlumnoReader[0]); //Ingresos
        while (aspectosEconomicosAlumnoReader.Read())
        {
            double ingresoMensual = 0;
            Double.TryParse(aspectosEconomicosAlumnoReader["SumaIngresos"].ToString(), out ingresoMensual);
            label2_5.Text = "$" + String.Format("{0:F2}", ingresoMensual);
            label2_6.Text = "$" + String.Format("{0:F2}", ingresoMensual * 12);
        }
        aspectosEconomicosAlumnoReader.Close();


        aspectosEconomicosAlumnoReader = dbCon.ExecuteSelect(QueryaspectosEconomicosAlumnoReader[1]); //Egresos
        while (aspectosEconomicosAlumnoReader.Read())
        {
            double egresoMensual = 0;
            Double.TryParse(aspectosEconomicosAlumnoReader["SumaEgresos"].ToString(), out egresoMensual);
            label2_8.Text = "$" + String.Format("{0:F2}", egresoMensual);
            label2_9.Text = "$" + String.Format("{0:F2}", egresoMensual * 12);
        }
        aspectosEconomicosAlumnoReader.Close();


        aspectosEconomicosFamiliaresReader = dbCon.ExecuteSelect(QueryAspectosEconomicosFamiliares[0]); //Ingresos Familiares
        while (aspectosEconomicosFamiliaresReader.Read())
        {
            double ingresoAnualFamiliar = 0;
            Double.TryParse(aspectosEconomicosFamiliaresReader["SumaIngresosFamiliares"].ToString(), out ingresoAnualFamiliar);
            label4_9.Text = "$" + String.Format("{0:F2}", ingresoAnualFamiliar / 12);
            label4_10.Text = "$" + String.Format("{0:F2}", ingresoAnualFamiliar);
        }
        aspectosEconomicosFamiliaresReader.Close();

        aspectosEconomicosFamiliaresReader = dbCon.ExecuteSelect(QueryAspectosEconomicosFamiliares[1]); //Egresos Familiares
        while (aspectosEconomicosFamiliaresReader.Read())
        {
            double egresoMensualFamiliar = 0;
            Double.TryParse(aspectosEconomicosFamiliaresReader["SumaEgresosFamiliares"].ToString(), out egresoMensualFamiliar);
            label4_12.Text = "$" + String.Format("{0:F2}", egresoMensualFamiliar);
            label4_13.Text = "$" + String.Format("{0:F2}", egresoMensualFamiliar * 12);
        }
        aspectosEconomicosFamiliaresReader.Close();

        dbCon.CloseConnection();
    }

    /*
     * Valida que la sesión del usuario sea la correcta para mostrar
     * el contenido de esta página.
     * 
     */
    protected void SessionValidation()
    {
        SessionID = (String)Session["SessionID"];
        String UserType = (String)Session["UserType"];

        if (String.IsNullOrEmpty(SessionID) || String.IsNullOrEmpty(UserType))
        {
            Session.RemoveAll();
            Response.Redirect("~/Default.aspx");
        }
        else
        {
            if (!String.Equals(UserType, "Alumnos"))
            {
                Session.RemoveAll();
                Response.Redirect("~/Default.aspx");
            }
        }
    }

    /*
     * 
     * 
     */
    protected void EnviarSolicitud(object sender, EventArgs e)
    {
        //TODO: Validation here

        DatabaseConnection dbcon = new DatabaseConnection();
        string enviarSolicitudQuery = "UPDATE \"Solicitud\" " +
            "SET Solicitud_Enviada = 'true',  " +
            "Solicitud_Fecha = + '" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss", DateTimeFormatInfo.InvariantInfo) + "'" +
            " WHERE Solicitud.Folio =  " + Folio.ToString();
        int rowsAffected = dbcon.ExecuteNonQuery(enviarSolicitudQuery);
        dbcon.CloseConnection();
        if (rowsAffected > 0)
        {
            Response.Redirect("~/Alumno/");
        }
    }

    protected void ModificarDatosAlumno(object sender, EventArgs e)
    {
        Response.Redirect("./Forma1.aspx");
    }

    protected void ModificarEconomicosAlumno(object sender, EventArgs e)
    {
        Response.Redirect("./Forma2.aspx");
    }

    protected void ModificarVehiculosPropiedades(object sender, EventArgs e)
    {
        Response.Redirect("./Forma5.aspx");
    }

    protected void ModificarFamiliares(object sender, EventArgs e)
    {
        Response.Redirect("./Forma3.aspx");
    }

    protected void ModificarMotivos(object sender, EventArgs e)
    {
        Response.Redirect("./Forma7.aspx");
    }

    protected void ModificarActivosPasivos(object sender, EventArgs e)
    {
        Response.Redirect("./Forma6.aspx");
    }

    protected void ModificarDocumentos(object sender, EventArgs e)
    {
        Response.Redirect("./Forma9.aspx");
    }

    protected void ModificarComentarios(object sender, EventArgs e)
    {
        Response.Redirect("./Forma8.aspx");
    }

    protected void ModificarIngresosEgresosFamiliares(object sender, EventArgs e)
    {
        Response.Redirect("./Forma4.aspx");
    }
}